1. Field of the Invention
The present invention generally relates to digital signal processing. In particular, the present invention relates to a Coordinate Rotation Digital Computer (CORDIC) in a digital signal processor (DSP).
2. Description of the Related Art
A Coordinate Rotation Digital Computer (CORDIC) algorithm performs vector coordinate rotations by using simple iterative shifts and add/subtract operations, which are relatively easy to implement in hardware. Advantages of the CORDIC algorithm have been well documented by U.S. Pat. No. 4,896,287 to O'Donnell, et al., U.S. Pat. No. 4,937,775 to Engeler, et al., and U.S. Pat. No. 5,684,435 to Bergen, the entireties of which are hereby incorporated by reference.
The CORDIC algorithm can be used in function generators. Function generators are an integral part of many DSP algorithms. Digital communication and signal processing systems use representations of sine, cosine, tangent and hyperbolic functions to perform fundamental operations such as coherent detection, rectangular to polar conversions, decoding of Quadrature Amplitude Modulation (QAM) and M-ARY modulated signals, and the like. In addition, the CORDIC algorithm can be used in Direct Digital Synthesis (DDS) of frequencies.
One conventional technique to generate trigonometric functions is via a lookup table stored in a Read Only Memory (ROM). Disadvantageously, the amount of data that is stored in a ROM lookup table can quickly surpass practical size and cost limitations. The storage area of a ROM chip increases almost exponentially with increases in resolution. By contrast, where a ROM lookup table is relatively small and inexpensive, the number of available functions and the resolution of the data available are limited.
Another conventional technique is to compute trigonometric functions through polynomial software routines executed in a digital signal processor (DSP). Disadvantageously, typical software implementations of function generation are relatively slow. Typical software routines use iterative techniques, and take relatively time consuming multiple cycles to generate a trigonometric function.
Function generation can be performed by a CORDIC. However, many conventional implementations of a CORDIC iterate numerous times to perform a calculation for function generation. Thus, a microprocessor or DSP reading the output of the CORDIC waits until computation is complete. Where a conventional CORDIC is pipelined, execution can be faster, but conventional pipelined CORDICs have relatively little integration with other hardware. Disadvantageously, other hardware, such as microprocessors and DSPs, closely monitor or control conventional pipelined CORDICs or store the results of the conventional pipelined CORDIC in relatively large and expensive memory devices.